In many known computer remote access tools, a user may connect to a remote device from another client computer/device such as a workstation using a remote access program or protocol. A user may receive at his workstation a display representative of the display of the remotely accessed computer. Using remote access programs, the user may then control the remote computer by performing actions such as, mouse clicks or taps (on touch-sensitive devices) or keyboard actions, which are transmitted to the remote device through a communication means such as a network.
A remote device may refer to desktop, personal computer, tablet, server, cellular phone or any device capable of executing software programs. Typically, a remote computer has a number of programs installed locally. For some users, it may be desirable to access one or more programs installed locally at a remote device from a computer/device which does not have the program locally stored. In other cases, it may be desirable to access one or more programs installed at a remote device, from a computer/device which has the program locally stored. In these cases, the user may wish to have the benefit of the settings/configuration of the program stored at the remote computer rather than the one stored locally at the client. In still other cases, the user may wish to use a different version of the program stored locally at the remote device, rather than the one stored locally at the client.
In certain known methods, to access a remotely located program, the user may have to remember in which remote device the desired program is installed. Furthermore, the user may need to remember or know additional information such as a username, password, and/or IP address of the remote computer in order to access and/or execute a remotely located program.
Additionally, problems may occur with respect to the remote device. For example, the remote computer may lose network connectivity, such that it can no longer be accessed by the user's client device. Alternatively, a remote device may not be capable of providing the user with adequate service. For example, the remote device may have network connectivity issues such as high latency and/or low bandwidth or the processing resources of the device itself may be insufficient. These processing resources may be statically limited due to hardware (e.g., having a slow processor or graphics card) or dynamically limited to the number of programs running on the remote device at any given time.
Thus, with respect to known methods, it becomes a task within itself to find a remote computer capable of providing adequate resources to the user. This process of trying different remote computers/devices may be very inefficient, causing delay, which in turn frustrates the user. Accordingly, it is beneficial to automatically select a remote device or provide the user with a choice of a remote device based upon resource usage statistics gathered from remotely accessible computers.
In known methods, if a user remotely connects to a remote device and runs a program, this device may lose connectivity to the user's device for any number of reasons (e.g., system crash or network problems), causing the user to be disconnected from the remote device and the program. The user may then need to try connecting to another remote device and program manually. This lost connection may also cause the user to lose a portion of their work. Accordingly, when a remote device loses connectivity to the user's device, it is beneficial to automatically connect the user to a new remote device and program. It is also beneficial to save, for the benefit of the user, work performed at the original remote device and provide it to the new remote device and program. In certain embodiments, this saving may be performed using a file-sharing service.
Certain well-known cloud file-sharing services such as DropBox, Box, Google Docs/Drive, Microsoft SkyDrive, etc., allow the user to store and share data/files. These services may also provide the user the ability to view or make limited modifications to certain file-types/formats supported by the file-sharing service. However, the interfaces provided by these services often provide limited functionality, not the robust and familiar feature set of locally stored applications. Accordingly, for supported file-types/formats it is beneficial to provide users with remote access to full-featured programs for viewing or modifying the files stored on cloud file-sharing services. Furthermore, for unsupported file-types/formats, it is beneficial to provide users with remote access to programs capable of viewing or modifying the files stored on cloud file-sharing services.